/**
 * 目标二：压缩 js 里代码，并整合到 html 中一起运行
 *  2.1 读取 public/index.js 内容
 *  2.2 使用正则替换内容字符串里的，回车符\r 换行符\n 打印语句console.log('xxx');
 *  2.3 确认后，拼接 html 内容写入到 dist/index.html 内
 */
const fs = require('fs')
const path = require('path')
// 1.1 读取 public/index.html 内容
fs.readFile(path.join(__dirname, 'public/index.html'), (err, data) => {
  // 如果有错误就阻止并打印错误信息
  if (err) return console.log(err)
  const htmlStr = data.toString()
  // console.log(htmlStr)
  // 1.2 使用正则替换内容字符串里的，回车符\r 换行符\n
  // replace 替换，支持正则
  //* 表示 0 次及以上
  // + 表示 1 次及以上
  const htmlResult = htmlStr.replace(/[\r\n]/g,'').replace(/\s+/g, ' ')
  // console.log(htmlResult)
    // 2.1 读取 public/index.js 内容
  fs.readFile(path.join(__dirname, 'public/index.js'), (err, data) => {
    const jsStr = data.toString()
    // console.log(err)
    // console.log(jsStr)
    // 2.2 使用正则替换内容字符串里的，回车符\r 换行符\n 打印语句console.log('xxx');
    // 贪婪模式：匹配到之后还会继续匹配，如果后续依然有相同的字符，才会结束匹配，中间的所有字符都会匹配上
    // 关闭贪婪模式只需要在量词后面加一个 ?
    const jsResultStr = jsStr.replace(/[\r\n]/g, '').replace(/\s+/g, ' ').replace(/console.log\('.+?'\)/g, '')
    const result = `<script>${jsResultStr}</script>`
    // console.log(result)

    // 2.3 确认后，拼接 html 内容写入到 dist/index.html 内
    fs.writeFile(path.join(__dirname, 'dist/index.html'), htmlResult + result, err => {
      if (err) console.log(err)
      else console.log('压缩成功')
    })
  })
})